/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Domain.util;

import EA_Model.IEC61970.Domain.AbsoluteDate;
import EA_Model.IEC61970.Domain.AbsoluteDateTime;
import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.ActivePowerChangeRate;
import EA_Model.IEC61970.Domain.Admittance;
import EA_Model.IEC61970.Domain.AngleDegrees;
import EA_Model.IEC61970.Domain.AngleRadians;
import EA_Model.IEC61970.Domain.ApparentPower;
import EA_Model.IEC61970.Domain.Capacitance;
import EA_Model.IEC61970.Domain.Conductance;
import EA_Model.IEC61970.Domain.CostPerEnergyUnit;
import EA_Model.IEC61970.Domain.CostRate;
import EA_Model.IEC61970.Domain.CurrentFlow;
import EA_Model.IEC61970.Domain.Damping;
import EA_Model.IEC61970.Domain.DomainPackage;
import EA_Model.IEC61970.Domain.FloatQuantity;
import EA_Model.IEC61970.Domain.Frequency;
import EA_Model.IEC61970.Domain.Hours;
import EA_Model.IEC61970.Domain.Impedance;
import EA_Model.IEC61970.Domain.Inductance;
import EA_Model.IEC61970.Domain.IntegerQuantity;
import EA_Model.IEC61970.Domain.KWActivePower;
import EA_Model.IEC61970.Domain.Length;
import EA_Model.IEC61970.Domain.Minutes;
import EA_Model.IEC61970.Domain.Money;
import EA_Model.IEC61970.Domain.PU;
import EA_Model.IEC61970.Domain.PerCent;
import EA_Model.IEC61970.Domain.Pressure;
import EA_Model.IEC61970.Domain.Reactance;
import EA_Model.IEC61970.Domain.ReactivePower;
import EA_Model.IEC61970.Domain.RealEnergy;
import EA_Model.IEC61970.Domain.Resistance;
import EA_Model.IEC61970.Domain.RotationSpeed;
import EA_Model.IEC61970.Domain.Seconds;
import EA_Model.IEC61970.Domain.StringQuantity;
import EA_Model.IEC61970.Domain.Susceptance;
import EA_Model.IEC61970.Domain.Temperature;
import EA_Model.IEC61970.Domain.Voltage;
import EA_Model.IEC61970.Domain.VoltagePerReactivePower;
import EA_Model.IEC61970.Domain.Volume;
import EA_Model.IEC61970.Domain.WaterLevel;
import EA_Model.IEC61970.Domain.Weight;

import java.util.List;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see EA_Model.IEC61970.Domain.DomainPackage
 * @generated
 */
public class DomainSwitch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static DomainPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DomainSwitch() {
		if (modelPackage == null) {
			modelPackage = DomainPackage.eINSTANCE;
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	public T doSwitch(EObject theEObject) {
		return doSwitch(theEObject.eClass(), theEObject);
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(EClass theEClass, EObject theEObject) {
		if (theEClass.eContainer() == modelPackage) {
			return doSwitch(theEClass.getClassifierID(), theEObject);
		}
		else {
			List<EClass> eSuperTypes = theEClass.getESuperTypes();
			return
				eSuperTypes.isEmpty() ?
					defaultCase(theEObject) :
					doSwitch(eSuperTypes.get(0), theEObject);
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
			case DomainPackage.ABSOLUTE_DATE: {
				AbsoluteDate absoluteDate = (AbsoluteDate)theEObject;
				T result = caseAbsoluteDate(absoluteDate);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.STRING: {
				EA_Model.IEC61970.Domain.String string = (EA_Model.IEC61970.Domain.String)theEObject;
				T result = caseString(string);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ACTIVE_POWER: {
				ActivePower activePower = (ActivePower)theEObject;
				T result = caseActivePower(activePower);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.FLOAT: {
				EA_Model.IEC61970.Domain.Float float_ = (EA_Model.IEC61970.Domain.Float)theEObject;
				T result = caseFloat(float_);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ACTIVE_POWER_CHANGE_RATE: {
				ActivePowerChangeRate activePowerChangeRate = (ActivePowerChangeRate)theEObject;
				T result = caseActivePowerChangeRate(activePowerChangeRate);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ADMITTANCE: {
				Admittance admittance = (Admittance)theEObject;
				T result = caseAdmittance(admittance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ANGLE_DEGREES: {
				AngleDegrees angleDegrees = (AngleDegrees)theEObject;
				T result = caseAngleDegrees(angleDegrees);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ANGLE_RADIANS: {
				AngleRadians angleRadians = (AngleRadians)theEObject;
				T result = caseAngleRadians(angleRadians);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.APPARENT_POWER: {
				ApparentPower apparentPower = (ApparentPower)theEObject;
				T result = caseApparentPower(apparentPower);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.BOOLEAN: {
				EA_Model.IEC61970.Domain.Boolean boolean_ = (EA_Model.IEC61970.Domain.Boolean)theEObject;
				T result = caseBoolean(boolean_);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.CAPACITANCE: {
				Capacitance capacitance = (Capacitance)theEObject;
				T result = caseCapacitance(capacitance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.CONDUCTANCE: {
				Conductance conductance = (Conductance)theEObject;
				T result = caseConductance(conductance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.COST_PER_ENERGY_UNIT: {
				CostPerEnergyUnit costPerEnergyUnit = (CostPerEnergyUnit)theEObject;
				T result = caseCostPerEnergyUnit(costPerEnergyUnit);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.COST_RATE: {
				CostRate costRate = (CostRate)theEObject;
				T result = caseCostRate(costRate);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.CURRENT_FLOW: {
				CurrentFlow currentFlow = (CurrentFlow)theEObject;
				T result = caseCurrentFlow(currentFlow);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.DAMPING: {
				Damping damping = (Damping)theEObject;
				T result = caseDamping(damping);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.FLOAT_QUANTITY: {
				FloatQuantity floatQuantity = (FloatQuantity)theEObject;
				T result = caseFloatQuantity(floatQuantity);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.FREQUENCY: {
				Frequency frequency = (Frequency)theEObject;
				T result = caseFrequency(frequency);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.HOURS: {
				Hours hours = (Hours)theEObject;
				T result = caseHours(hours);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.IMPEDANCE: {
				Impedance impedance = (Impedance)theEObject;
				T result = caseImpedance(impedance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.INDUCTANCE: {
				Inductance inductance = (Inductance)theEObject;
				T result = caseInductance(inductance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.INTEGER: {
				EA_Model.IEC61970.Domain.Integer integer = (EA_Model.IEC61970.Domain.Integer)theEObject;
				T result = caseInteger(integer);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.INTEGER_QUANTITY: {
				IntegerQuantity integerQuantity = (IntegerQuantity)theEObject;
				T result = caseIntegerQuantity(integerQuantity);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.KW_ACTIVE_POWER: {
				KWActivePower kwActivePower = (KWActivePower)theEObject;
				T result = caseKWActivePower(kwActivePower);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.LENGTH: {
				Length length = (Length)theEObject;
				T result = caseLength(length);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.MINUTES: {
				Minutes minutes = (Minutes)theEObject;
				T result = caseMinutes(minutes);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.MONEY: {
				Money money = (Money)theEObject;
				T result = caseMoney(money);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.PU: {
				PU pu = (PU)theEObject;
				T result = casePU(pu);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.PER_CENT: {
				PerCent perCent = (PerCent)theEObject;
				T result = casePerCent(perCent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.PRESSURE: {
				Pressure pressure = (Pressure)theEObject;
				T result = casePressure(pressure);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.REACTANCE: {
				Reactance reactance = (Reactance)theEObject;
				T result = caseReactance(reactance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.REACTIVE_POWER: {
				ReactivePower reactivePower = (ReactivePower)theEObject;
				T result = caseReactivePower(reactivePower);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.REAL_ENERGY: {
				RealEnergy realEnergy = (RealEnergy)theEObject;
				T result = caseRealEnergy(realEnergy);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.RESISTANCE: {
				Resistance resistance = (Resistance)theEObject;
				T result = caseResistance(resistance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ROTATION_SPEED: {
				RotationSpeed rotationSpeed = (RotationSpeed)theEObject;
				T result = caseRotationSpeed(rotationSpeed);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.SECONDS: {
				Seconds seconds = (Seconds)theEObject;
				T result = caseSeconds(seconds);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.STRING_QUANTITY: {
				StringQuantity stringQuantity = (StringQuantity)theEObject;
				T result = caseStringQuantity(stringQuantity);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.SUSCEPTANCE: {
				Susceptance susceptance = (Susceptance)theEObject;
				T result = caseSusceptance(susceptance);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.TEMPERATURE: {
				Temperature temperature = (Temperature)theEObject;
				T result = caseTemperature(temperature);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.VOLTAGE: {
				Voltage voltage = (Voltage)theEObject;
				T result = caseVoltage(voltage);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.VOLTAGE_PER_REACTIVE_POWER: {
				VoltagePerReactivePower voltagePerReactivePower = (VoltagePerReactivePower)theEObject;
				T result = caseVoltagePerReactivePower(voltagePerReactivePower);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.VOLUME: {
				Volume volume = (Volume)theEObject;
				T result = caseVolume(volume);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.WATER_LEVEL: {
				WaterLevel waterLevel = (WaterLevel)theEObject;
				T result = caseWaterLevel(waterLevel);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.WEIGHT: {
				Weight weight = (Weight)theEObject;
				T result = caseWeight(weight);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case DomainPackage.ABSOLUTE_DATE_TIME: {
				AbsoluteDateTime absoluteDateTime = (AbsoluteDateTime)theEObject;
				T result = caseAbsoluteDateTime(absoluteDateTime);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			default: return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Absolute Date</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Absolute Date</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAbsoluteDate(AbsoluteDate object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>String</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>String</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseString(EA_Model.IEC61970.Domain.String object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Active Power</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Active Power</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActivePower(ActivePower object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Float</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Float</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseFloat(EA_Model.IEC61970.Domain.Float object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Active Power Change Rate</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Active Power Change Rate</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActivePowerChangeRate(ActivePowerChangeRate object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Admittance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Admittance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAdmittance(Admittance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Angle Degrees</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Angle Degrees</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAngleDegrees(AngleDegrees object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Angle Radians</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Angle Radians</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAngleRadians(AngleRadians object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Apparent Power</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Apparent Power</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseApparentPower(ApparentPower object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Boolean</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Boolean</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBoolean(EA_Model.IEC61970.Domain.Boolean object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Capacitance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Capacitance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseCapacitance(Capacitance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Conductance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Conductance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseConductance(Conductance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Cost Per Energy Unit</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Cost Per Energy Unit</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseCostPerEnergyUnit(CostPerEnergyUnit object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Cost Rate</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Cost Rate</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseCostRate(CostRate object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Current Flow</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Current Flow</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseCurrentFlow(CurrentFlow object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Damping</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Damping</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDamping(Damping object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Float Quantity</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Float Quantity</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseFloatQuantity(FloatQuantity object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Frequency</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Frequency</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseFrequency(Frequency object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Hours</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Hours</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseHours(Hours object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Impedance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Impedance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseImpedance(Impedance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Inductance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Inductance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseInductance(Inductance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Integer</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Integer</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseInteger(EA_Model.IEC61970.Domain.Integer object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Integer Quantity</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Integer Quantity</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseIntegerQuantity(IntegerQuantity object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>KW Active Power</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>KW Active Power</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseKWActivePower(KWActivePower object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Length</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Length</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseLength(Length object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Minutes</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Minutes</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMinutes(Minutes object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Money</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Money</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMoney(Money object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>PU</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>PU</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePU(PU object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Per Cent</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Per Cent</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePerCent(PerCent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Pressure</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Pressure</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePressure(Pressure object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Reactance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Reactance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseReactance(Reactance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Reactive Power</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Reactive Power</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseReactivePower(ReactivePower object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Real Energy</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Real Energy</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseRealEnergy(RealEnergy object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Resistance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Resistance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseResistance(Resistance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Rotation Speed</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Rotation Speed</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseRotationSpeed(RotationSpeed object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Seconds</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Seconds</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSeconds(Seconds object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>String Quantity</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>String Quantity</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseStringQuantity(StringQuantity object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Susceptance</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Susceptance</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSusceptance(Susceptance object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Temperature</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Temperature</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseTemperature(Temperature object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Voltage</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Voltage</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseVoltage(Voltage object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Voltage Per Reactive Power</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Voltage Per Reactive Power</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseVoltagePerReactivePower(VoltagePerReactivePower object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Volume</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Volume</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseVolume(Volume object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Water Level</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Water Level</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseWaterLevel(WaterLevel object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Weight</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Weight</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseWeight(Weight object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Absolute Date Time</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Absolute Date Time</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAbsoluteDateTime(AbsoluteDateTime object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	public T defaultCase(EObject object) {
		return null;
	}

} //DomainSwitch
